#ifndef __LIB_AGORA_ADMIN_USERMANAGER_H__
#define __LIB_AGORA_ADMIN_USERMANAGER_H__


#include <list>
#include "IUserManager.h"

class	UserManager : public IUserManager
{
public:
	static IUserManager*	GetUserManager(void);
	IUser*					GetUser(unsigned int id);
	IUser*					GetUser(std::string& login);
	unsigned int			LoadUser(void);
	IUser*					LoadUser(const unsigned int id);
	unsigned int			UnloadUser(void);
	unsigned int			UnloadUser(const unsigned int id);
	IUser*					CreateUser(const std::string& login, const std::string& password);
	unsigned int			DeleteUser(void);
	unsigned int			DeleteUser(const unsigned int id);
	bool					UserExists(const std::string& login);

private:
	UserManager();
	static IUserManager*	_instance;
	std::list<IUser*>		_user;
};

#endif